// 数组去重

// set 
const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Set(array)];

const s = new Set();

array.forEach(x => s.add(x));

const uniqueArray1 = [...s];

// filter

const uniqueArray2 = array.filter((item, index, arr) => arr.indexOf(item) === index);

// map
const uniqueArray3 = array.map((item, index, array) => array.indexOf(item) === index ? item : null).
filter(item => item != null);
console.log(uniqueArray3); // 输出: [1, 2, 3, 4, 5]

// reduce 
const uniqueArray4 = array.reduce((acc, current) => {
  if (acc.indexOf(current) === -1) {
    acc.push(current);
  }
  return acc;
}, []);


console.log(uniqueArray4)





// 判断数组的方法

const obj = [];

// 通过Object.prototype.toString.call()做判断

Object.prototype.toString.call(obj).slice(8,-1) === 'Array';

// 1通过原型链做判断

obj.__proto__ === Array.prototype;

// 2 通过ES6的Array.isArray()做判断

Array.isArray(obj);

// 3 通过instanceof做判断
obj instanceof Array

//4 通过Array.prototype.isPrototypeOf

Array.prototype.isPrototypeOf(obj)


// 数组遍历

